
package modelo.bo.cmd.contato;

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.http.*;
import modelo.bo.cmd.Acao;
import modelo.dao.impl.*;
import modelo.dao.util.*;
import modelo.dto.*;

public class BuscarContato extends Acao {
	private Contato contato;
	
	@Override
	public void init(HttpServletRequest request) {
		super.pagina = "/pages/contato/atualizar-contato.jsp";
		//super.pagina = "/index.jsp";
		this.contato = new Contato();
		this.contato.setCodigo(Integer.parseInt(request.getParameter("id")));
		
	}

	@Override
	public boolean executar(HttpServletRequest request, HttpServletResponse response) throws IOException {
		String msg = String.format("Contato \" %s \" atualizado.", this.contato.getNome());
		
		Contato contato = null;
		
		try {
			Connection conn = ConexaoMySQL.getConnection(); 
			
			ContatoImpl ci = new ContatoImpl(conn);
			
			GrupoImpl gi = new GrupoImpl(conn);
			List<Grupo> grupos = gi.buscarTodos();
			
			OperadoraImpl oi = new OperadoraImpl(conn);
			List<Operadora> ops = oi.buscarTodos();
			
			if(ops != null) {
				request.setAttribute("operadoras", ops);
			}			
			
			if(grupos != null) {
				request.setAttribute("grupos", grupos);
			}
			
			if((contato = ci.buscarByGrupoAndTelefoneAndOperadora(this.contato)) != null) {
				request.setAttribute("contato", contato);
			}
			// preenche o form de contato sem o telefone 
			else{
				contato = ci.getObjetoById(this.contato);				
				request.setAttribute("contato", contato);
			}
			
		}
		catch (SQLException e) {
			e.printStackTrace();
			msg = "Erro ao tentar atualizar o contato ";
			request.setAttribute("msg", msg + e.getMessage());			
		}
				
		return super.efetuou;
	}

	@Override
	public String retornaPagina() {
		
		return super.pagina;
	}

}
